package com.gjy.mywork.util;

import java.io.Serializable;
import java.util.Collection;

import org.springframework.util.StringUtils;

import com.gjy.mywork.exception.MyException;



/**
 * 
 * @author GJY
 *
 * @version 创建时间：2017年11月7日 下午3:11:04 
 *
 * 验证非空
 *
 */
public class IsNotNullValit implements Serializable{

	private static final long serialVersionUID = 5507821424757616576L;
	
	/**
	 * 判断String 是否为空
	 * @param str
	 * @return
	 */
	public static boolean StringIsNotNull(String str) {
		
		if (StringUtils.isEmpty(str) || str.trim().length()==0) {
			
			return false;
		}
		
		return true;
	}
	
	
	/**
	 * 判集合是否为空
	 */
	@SuppressWarnings("rawtypes")
	public static boolean CollectionIsNotNull(Collection colls) {
		
		if (colls == null || colls.size() == 0) {
			
			return false;
		}
		
		return true;
		
	}


	/**
	 * Integer类型不为空
	 * @param param
	 * @return
	 */
	public static boolean IntegerIsNotNull(Integer param) {
		
		if (param != null) {
			try {
				param.intValue();
				return true;
			} catch (Exception e) {
				e.printStackTrace();
				return false;
			}
		}
		return false;
	}
	
	/**
	 * 判断参数是否为空
	 * @param params 当前仅支持String ,Integer ,Collection的子类
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public static boolean paramsIsnotNull(Object... params) {
		
		if (params == null || params.length == 0) {
			return false;
		}
		
		boolean isOk = false;
		
		for (Object obj : params) {
			
			if (obj instanceof Integer) {
				isOk = IntegerIsNotNull((Integer) obj); 
			}else if (obj instanceof String) {
				isOk = StringIsNotNull((String)obj);
			}else if (obj instanceof Collection) {
				isOk = CollectionIsNotNull((Collection) obj);
			}
			//只要有一个是false就返回
			if (!isOk) {
				break;
			}
		}
		
		return isOk;
		
	}
	
	public static boolean stringLength(String value,Integer maxLength) {
		
		if(maxLength == null) {
			maxLength = 10;
		}
		
		if(IsNotNullValit.StringIsNotNull(value)) {
			
			if(value.length()>maxLength) {
				return false;
			}
			
		}else {
			throw new MyException("校验值不能为空");
		}
		
		return true;
		
	}
	

}
